1

分享篮球即时比分api接口调用的示例代码,可查看在线调用文档,需注册下https://www.feijing88.com/bas...

package com.huaying.demo.basketball;
 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * @API: 2.即时变化的比分数据
 * @Website: https://www.feijing88.com
 */
public class BasketballChange {
 
    public static void main(String[] args) {
        try {
            String content = getContent();
 
            JAXBContext jaxbContext = JAXBContext.newInstance(ChangeList.class);
            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
 
            ChangeList list = (ChangeList) unmarshaller.unmarshal(new ByteArrayInputStream(content.getBytes()));
            list.getChangeList().forEach(System.out::println);
 
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
 
    /**
     * 获取API返回内容
     * <p>
     * Note: 这里为了方便测试我使用了一份本地文件,使用时应替换为真实接口返回内容
     */
    private static String getContent() {
        try {
            StringBuilder builder = new StringBuilder();
            List<String> lines = Files.readAllLines(Paths.get("./src/main/resources/BasketballChange.xml"), StandardCharsets.UTF_8);
            lines.forEach(line -> builder.append(line));
            return builder.toString();
        } catch (Throwable t) {
            t.printStackTrace();
            return "";
        }
    }
 
 
    @XmlRootElement(name = "c")
    public static class ChangeList {
        @XmlElement(name = "h")
        private List<String> itemList;
 
        public List<Change> getChangeList() {
            return itemList.stream().map(s -> {
                Change change = new Change();
                change.parse(s);
                return change;
            }).collect(Collectors.toList());
        }
    }
 
    public static class Change {
        private String matchId;
        private int matchStatus;
        private String remainTime;
        private int homeScore;
        private int homeScoreFirst;
        private int homeScoreSecond;
        private int homeScoreThird;
        private int homeScoreFourth;
        private int homeScoreFirstOT;
        private int homeScoreSecondOT;
        private int homeScoreThirdOT;
        private int awayScore;
        private int awayScoreFirst;
        private int awayScoreSecond;
        private int awayScoreThird;
        private int awayScoreFourth;
        private int awayScoreFirstOT;
        private int awayScoreSecondOT;
        private int awayScoreThirdOT;
 
        public void parse(String data) {
            String[] values = data.split("\\^");
            matchId = values[0];
            matchStatus = parseInt(values[1]);
            remainTime = values[2];
            homeScore = parseInt(values[3]);
            homeScoreFirst = parseInt(values[5]);
            homeScoreSecond = parseInt(values[7]);
            homeScoreThird = parseInt(values[9]);
            homeScoreFourth = parseInt(values[11]);
            homeScoreFirstOT = parseInt(values[16]);
            homeScoreSecondOT = parseInt(values[18]);
            homeScoreThirdOT = parseInt(values[20]);
            awayScore = parseInt(values[4]);
            awayScoreFirst = parseInt(values[6]);
            awayScoreSecond = parseInt(values[8]);
            awayScoreThird = parseInt(values[10]);
            awayScoreFourth = parseInt(values[12]);
            awayScoreFirstOT = parseInt(values[17]);
            awayScoreSecondOT = parseInt(values[19]);
            awayScoreThirdOT = parseInt(values[21]);
        }
 
        private int parseInt(String data) {
            return data == null || data.isEmpty() ? 0 : Integer.valueOf(data);
        }
 
        @Override
        public String toString() {
            return "Change{" +
                    "matchId='" + matchId + '\'' +
                    ", matchStatus=" + matchStatus +
                    ", remainTime='" + remainTime + '\'' +
                    ", homeScore=" + homeScore +
                    ", homeScoreFirst=" + homeScoreFirst +
                    ", homeScoreSecond=" + homeScoreSecond +
                    ", homeScoreThird=" + homeScoreThird +
                    ", homeScoreFourth=" + homeScoreFourth +
                    ", homeScoreFirstOT=" + homeScoreFirstOT +
                    ", homeScoreSecondOT=" + homeScoreSecondOT +
                    ", homeScoreThirdOT=" + homeScoreThirdOT +
                    ", awayScore=" + awayScore +
                    ", awayScoreFirst=" + awayScoreFirst +
                    ", awayScoreSecond=" + awayScoreSecond +
                    ", awayScoreThird=" + awayScoreThird +
                    ", awayScoreFourth=" + awayScoreFourth +
                    ", awayScoreFirstOT=" + awayScoreFirstOT +
                    ", awayScoreSecondOT=" + awayScoreSecondOT +
                    ", awayScoreThirdOT=" + awayScoreThirdOT +
                    '}';
        }
    }
}

API 返回数据如下(部分):


Change{matchId='358749', matchStatus=-1, remainTime='', homeScore=86, homeScoreFirst=28, homeScoreSecond=22, homeScoreThird=13, homeScoreFourth=23, homeScoreFirstOT=0, homeScoreSecondOT=0, homeScoreThirdOT=0, awayScore=52, awayScoreFirst=20, awayScoreSecond=11, awayScoreThird=14, awayScoreFourth=7, awayScoreFirstOT=0, awayScoreSecondOT=0, awayScoreThirdOT=0}
Change{matchId='358761', matchStatus=2, remainTime='06:50', homeScore=20, homeScoreFirst=14, homeScoreSecond=6, homeScoreThird=0, homeScoreFourth=0, homeScoreFirstOT=0, homeScoreSecondOT=0, homeScoreThirdOT=0, awayScore=44, awayScoreFirst=31, awayScoreSecond=13, awayScoreThird=0, awayScoreFourth=0, awayScoreFirstOT=0, awayScoreSecondOT=0, awayScoreThirdOT=0}

feijingdata
24 声望3 粉丝